package divide;

/**
 * 双指针法或 分治法
 * <p>
 * 分治  先分后治   先划分为若干个等价子结果 然后收集起来  二分只是分 并不收集结果
 */
public class 合并两个排序链表_21 {

    /**
     *
     * 等于合并小的节点的下一个节点和另一个子链表
     * @param l1
     * @param l2
     * @return
     */
    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
        if (l1 == null) return l2;
        if (l2 == null) return l1;
        if (l1.val < l2.val) {
            l1.next = mergeTwoLists(l1.next, l2);
            return l1;
        }else {
            l2.next = mergeTwoLists(l2.next, l1);
            return l2;
        }
    }


    class ListNode {
        int val;
        ListNode next;

        ListNode(int x) {
            val = x;
        }
    }
}
